#ifndef __LS_DM_H__
#define __LS_DM_H__

#include "stdint.h"

/*校验信息*/
#define DSC_CHECKCODE                       "searching.."
#define DSC_CHECKCODE_UPDATE                "update.."
#define DSC_CHECKCODE_RESET                 "reset.."

//
#define DSC_MT_SEARCH                       10
#define DSC_MT_SEARCH_RESP                  11


#define DSC_CHECKCODE_LEN                   12
#define DSC_IPV4ADDR_LEN                    16
#define DSC_MACADDR_LEN                     18
#define DSC_DEVNAME_MAXLEN                  64
#define DSC_SOFTWARE_VERSION_MAXLEN         64

/*网络配置信息*/
typedef struct NETWORK_INFO{
    char   ucDhcpEnable;                    /*dhcp是否启动: 0关闭, 1启动*/
    char   ucIpAddr[DSC_IPV4ADDR_LEN];      /*ip地址*/
    char   ucMacAddr[DSC_MACADDR_LEN];      /*mac 地址: 例如 A1:B2:C3:D4:E5:F6*/
}NETWORK_INFO;


/*设备信息*/
typedef struct DSC_DEV_INFO{
    unsigned char   ucDevName[DSC_DEVNAME_MAXLEN];         /*设备名称*/
}DSC_DEV_INFO;


/*平台信息*/
typedef struct PLATFORM_INFO{
    unsigned char   ucFirmwareVersion[DSC_SOFTWARE_VERSION_MAXLEN];                /*固件版本*/
    unsigned char 	ucP2pSerialNum[32];											   /*p2p序列号*/
}PLATFORM_INFO;


/*搜索结构体回复*/
typedef struct DEVICE_INFO{
    unsigned char            ucCheckCode[DSC_CHECKCODE_LEN];     /*校验码: 填写 DSC_CHECKCODE*/
    unsigned char            ucMesType;                          /*消息类型: 填写 DSC_MT_SEARCH*/
    NETWORK_INFO             networkInfo;                        /*网络配置信息*/
    DSC_DEV_INFO             devInfo;                            /*设备信息*/
    PLATFORM_INFO            platformInfo;                       /*平台信息*/
}DEVICE_INFO;


/*结构体回复*/
typedef struct UPDATE_INFO_RESP{
    char                ucCheckCode[DSC_CHECKCODE_LEN];     /*校验码: 填写 DSC_CHECKCODE*/
    char                ucMesType;                          /*消息类型: 填写 DSC_MT_SEARCH*/
    uint32_t            currCnt;
    uint32_t            TotalCnt;
}UPDATE_INFO_RESP;


/*结构体*/
typedef struct UPDATE_INFO{
    char                ucCheckCode[DSC_CHECKCODE_LEN];     /*校验码: 填写 DSC_CHECKCODE*/
    char                ucMesType;                          /*消息类型: 填写 DSC_MT_SEARCH*/
    char                ucURL[256];
}UPDATE_INFO;



typedef struct UPDATE_RESET{
    char                ucCheckCode[DSC_CHECKCODE_LEN];     /*校验码: 填写 DSC_CHECKCODE*/
    char                ucMesType;                          /*消息类型: 填写 DSC_MT_SEARCH*/
}UPDATE_RESET,UPDATE_RESET_RESP;



/// @brief 
void ls_dm_init();


/// @brief 
void ls_dm_send_update(uint32_t curr,uint32_t tatol);

#endif